搭建神经网络基本流程
- 训练的数据
 - 定义节点准备接收数据
 - 定义神经层:隐藏层和预测层
 - 定义 loss 表达式
 - 选择 optimizer 使 loss 达到最小
 - 然后对所有变量进行初始化,通过 sess.run optimizer,迭代 1000 次进行学习
 
全局代码
1  | # -*- coding: utf-8 -*-  | 
运行结果:
        模型精确度: 0.1289
        模型精确度: 0.8357
        模型精确度: 0.8917
        模型精确度: 0.9037
        模型精确度: 0.8971
        模型精确度: 0.9097
        模型精确度: 0.9143
        模型精确度: 0.9049
        模型精确度: 0.9054
        模型精确度: 0.9117
        模型精确度: 0.9087
        模型精确度: 0.9022
        模型精确度: 0.9161
        模型精确度: 0.915
        模型精确度: 0.9164
        模型精确度: 0.9048
        模型精确度: 0.9174
        模型精确度: 0.9131
        模型精确度: 0.9047
        模型精确度: 0.9149
        模型保存路径: /home/pzs741/PycharmProjects/tensorflow-minist-master/mnist/data/regression_model
主要步骤解释
- 
导包及数据
 from mnist import input_data
 from mnist import modeldata = input_data.read_data_sets("MNIST_DATA", one_hot=True) import tensorflow as tf - 
定义线性模型
 with tf.variable_scope(“regression”):
 x = tf.placeholder(tf.float32, [None, 784])
 y, variables = model.regression(x) - 
定义交叉熵和预测值
 

    y_ = tf.placeholder("float", [None, 10])
    cross_entropy = -tf.reduce_sum(y_ * tf.log(y))
    train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)
    correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))
    accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
- 然后对所有变量进行初始化,通过 sess.run optimizer,迭代 1000 次进行学习
 # important step 对所有变量进行初始化
 init = tf.initialize_all_variables()
 sess = tf.Session()
 # 上面定义的都没有运算,直到 sess.run 才会开始运算
 sess.run(init)
 # 迭代 1000 次学习,sess.run optimizer
 for i in range(1000):
 batch_xs, batch_ys = data.train.next_batch(100)
 # training train_step 和 loss 都是由 placeholder 定义的运算,所以这里要用 feed 传入参数
 sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})
 if i % 50 == 0:
 # to see the step improvement
 print((sess.run(accuracy, feed_dict={x: data.test.images, y_: data.test.labels})))